/**
 * 有若干张满Ai元减Bi元的优惠券，可以叠加使用
 * 已知最后实际支出了M元，问原价最大是多少
 * 令原价是X，则 M + 优惠 == X
 * 令Di是满i元减掉的幅度，则如果 M + Di >= i, 说明这个折扣可行
 * 找最大的即可
 */
#include <bits/stdc++.h>
using namespace std;

#include <bits/extc++.h>
using namespace __gnu_pbds;


using llt = long long;
using Real = double;
using vi = vector<int>;
using pii = pair<int, int>;

int N;
vector<pii> A;
int M;

llt proc(){
    sort(A.begin(), A.end());
    map<llt, llt> mm;
    mm.emplace(A[0]);
    for(int i=1;i<N;++i){
        const auto & p = A[i];
        auto it = mm.rbegin();
        if(it->first == p.first) it->second += p.second;
        else mm.emplace(p.first, p.second + it->second);
    }
    for(auto it=mm.rbegin(),et=mm.rend();it!=et;++it){
        if(M + it->second >= it->first){
            return M + it->second;
        }
    }
    return M;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(0);
    int nofkase = 1;
    cin >> nofkase;
    while(nofkase--){
        cin >> N >> M;
        A.assign(N, {});
        for(auto & p : A) cin >> p.first >> p.second;
        cout << proc() << "\n";
    }
    return 0;
}